/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package controller;

import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.validation.BindException;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.AbstractCommandController;
import model.Usuario;
import model.Viaje;
import model.Lugar;
import model.Participante;
import org.apache.log4j.Level;
import org.apache.log4j.Logger;
import org.apache.log4j.xml.DOMConfigurator;
import service.LugarService;
import service.ParticipanteService;
import service.UsuarioService;
import service.ViajeService;

/**
 *
 * @author Geral Zerpa
 */
public class RegistrarViaje extends AbstractCommandController {

    private UsuarioService usuarioService;
    private ViajeService viajeService;
    private LugarService lugarService;
    private ParticipanteService participanteService;
    private static Logger loggers = null;

    public void setUsuarioService(UsuarioService usuarioService) {
        this.usuarioService = usuarioService;
    }

    public void setViajeService(ViajeService viajeService) {
        this.viajeService = viajeService;
    }

    public void setLugarService(LugarService lugarService) {
        this.lugarService = lugarService;
    }

    public void setParticipanteService(ParticipanteService participanteService) {
        this.participanteService = participanteService;
    }

    public RegistrarViaje() {
        this.setCommandClass(Viaje.class);
        loggers = Logger.getLogger(Usuario.class.getName());
        loggers.setLevel(Level.ALL);
        DOMConfigurator.configure("C:/Documents and Settings/Administrador/Escritorio/HayTour - Repositorio/hayTourViajes/src/java/main/resources/log4j.xml");
    }

    @Override
    protected ModelAndView handle(HttpServletRequest request, HttpServletResponse response, Object form, BindException errors) throws Exception {
        Map model = new HashMap();

        Viaje viaje = (Viaje) form;
        System.out.println("hola crear viaje.geral");
        System.out.println(request.getParameter("lugar"));
        Usuario usuario;
        Lugar lug;
        lug = (Lugar) lugarService.getLugar(Long.parseLong(request.getParameter("lugar")));
        System.out.println(lug.getNombre());
        usuario = (Usuario) usuarioService.getUsuario(Long.parseLong(request.getParameter("ux")));
        Viaje nuevo = new Viaje(usuario, lug, viaje.getNombre(), viaje.getSitioAlojamiento(), viaje.getFechaLlegada(), viaje.getFechaPartida(), viaje.getPrivilegio(), viaje.getEstatus());
        loggers.info("Registrando viaje de " + usuario.getNombre());
        viajeService.saveViaje(nuevo);
        List vias;
        vias =  viajeService.buscarViaje(viaje.getNombre(),Long.parseLong(request.getParameter("ux")));
        Viaje v;
        v = (Viaje) vias.get(0);
        Participante par = new Participante(usuario,v,"PROPIO");
        System.out.println(nuevo.getUsuario().getNombre());
        participanteService.saveAmigoViaje(par);

        request.getSession().setAttribute("usuarioList", null);
        model.put("usuario", usuario);
        model.put("lugar", lug);
        model.put("viaje", nuevo);
        return new ModelAndView("verViaje", model);
    }
}
